The present invention is related to the generation of firmware for the basic input/output functions of a computer and, more particularly, to a utility providing a graphical interface such as a constructed iconographic tree structure with which an original equipment manufacturer (OEM) programmer can create a graphical representation of Advanced Configuration and Power Interface (ACPI) compatible firmware, and generate the firmware source code based on the graphical representation.
The firmware of a computer system is the portion of the system software, including the basic input/output system (BIOS), stored in read-only memory (ROM) in chips on the motherboard. Since legacy (i.e., pre-ACPI) operating systems do not have information concerning the devices on a platform, the BIOS provides the operating system on boot-up with the general information about how the devices on the platform are configured and controlled. For instance, the BIOS would inform the operating system regarding protocols of communication with the onboard video graphics adapter card and the sound card, if one is connected to the motherboard or is interfaced via an input/output (I/O) slot.
There are several drawbacks to allocating the power management, thermal management, battery management and plug-and-play functions to the BIOS firmware. For example, the BIOS is only accessed at boot-up and, therefore, these functions cannot be modified or updated subsequent to boot-up. Any alterations of the hardware subsequent to the boot-up cannot be handled by the BIOS. Another drawback is that the BIOS firmware and the hardware are strongly coupled. The evolution of the BIOS and the hardware cannot be independent and their ship cycles must be synchronized. Furthermore, there is limited space available in the BIOS firmware, so only relatively simple power management policies could be implemented.
Another problem is the complexity of the creation of BIOS firmware, particularly ACPI-compatible BIOS firmware. The specialized knowledge required to generate the BIOS code for a particular device is not only dependent on the device, but is also dependent on the platform on which it is to be installed, and the other devices with which it is to interact. Generating error-free code is of particular importance. Furthermore, the BIOS is fundamental to the operation of the machine, so its reliability, size and performance is critical. Consequently, the development of the BIOS is one of the most serious scheduling risks for an OEM due to the extensive testing that must be performed to insure its quality.